В компании
собрали информацию о днях рождения сотрудников. Напишите программу, которая
подсчитает количество людей, родившихся в каждый месяц.
Вход. Первая строка содержит количество сотрудников n (1 ≤ n ≤ 5000). Каждая из следующих n строк содержит ID (4-цифровое число) сотрудника и его/ее дату
рождения. Дата рождения задается в формате: день/месяц/год. Все заданные даты
корректны.
Выход. Вывести номер
месяца (1 – 12) и количество сотрудников, родившихся в нем.
Пример входа |
Пример
выхода |
10 1000
1/2/1967 1012
13/10/1940 1103
5/1/1965 2012
16/7/1980 1125
18/9/1979 1235
10/10/1976 1400
16/11/1973 1013
5/1/1965 2109
28/7/1958 2155
10/12/1970 |
1 2 2 1 3 0 4 0 5 0 6 0 7 2 8 0 9 1 10 2 11 1 12 1 |
сортировка
подсчетом
Анализ алгоритма
Объявим массив
из 12 элементов и при помощи сортировки подсчетом вычислим количество
сотрудников в каждом месяце.
Реализация
алгоритма
В массиве a будем
собирать статистику по дням рождения за каждый месяц (месяца пронумерованы от 1
до 12).
int a[13];
Читаем входные данные. Подсчитываем
количество сотрудников, родившихся в каждом месяце.
scanf("%d", &n);
memset(a,0,sizeof(a));
for(i = 0; i < n; i++)
{
scanf("%d
%d/%d/%d",&id,&d,&m,&y);
a[m]++;
}
Выводим ответ.
for(i = 1; i <= 12; i++)
printf("%d
%d\n",i,a[i]);
Java реализация
import
java.util.*;
public class
Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
int tests =
con.nextInt();
int m[] = new int[13];
while(tests--
> 0)
{
con.next();
m[Integer.parseInt(con.next().split("/")[1])]++;
}
for(int i = 1; i <= 12; i++)
System.out.println(i + " " + m[i]);
con.close();
}
}